#pragma once

#include "Render/Shader/GlobalShader.h"

class LocalVertexShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(LocalVertexShader)

	DECLARE_SHADER_END()
};

class LocalFragmentShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(LocalFragmentShader)

	DECLARE_SHADER_END()
};

class VoxelVertexShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(VoxelVertexShader)

	DECLARE_SHADER_END()
};

class VoxelGeometryShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(VoxelGeometryShader)

	DECLARE_SHADER_END()
};

class VoxelFragmentShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(VoxelFragmentShader)

	DECLARE_SHADER_END()
};

class OctreeAllocNodeComputeShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(OctreeAllocNodeComputeShader)

	DECLARE_SHADER_END()
};

class OctreeInitNodeComputeShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(OctreeInitNodeComputeShader)

	DECLARE_SHADER_END()
};

class OctreeTagNodeComputeShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(OctreeTagNodeComputeShader)

	DECLARE_SHADER_END()
};

class OctreeModifyArgComputeShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(OctreeModifyArgComputeShader)

	DECLARE_SHADER_END()
};

class DeferredVertexShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(DeferredVertexShader)

	DECLARE_SHADER_END()
};

class BeamFragmentShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(BeamFragmentShader)

	DECLARE_SHADER_END()
};

class TracerFragmentShader : public RHIShader
{
	DECLARE_SHADER_BEGIN(TracerFragmentShader)

	DECLARE_SHADER_END()
};

